const http = require('http')
const express = require('express')
const Websocket = require('ws').Server
const app = express()
const server = http.createServer(app)
// 监听端口服务器用 server对象
server.listen(3000, '0.0.0.0', () => console.log('http://localhost:3000'))
// 静态资源不受影响
app.use(express.static('./public'))

// http协议和ws协议 公用一个端口号
const ws = new Websocket({ server: server })

let clients = []

// socket它是一个对象，它就是客户端连接到服务器端的标识对象
ws.on('connection', socket => {
  // 根据版本，在规范中找到对应uuid字符 + Sec-WebSocket-Key 进行 sha1 加密  base64
  console.log('连接到服务器了')
  clients.push(socket)
  socket.on('message', msg => {
    // socket.send('服务器说：' + msg + '--' + Date.now())
    clients.forEach(client => {
      client.send('服务器说：' + msg + '--' + Date.now())
    })
  })
  // 监听客户端离开的事件
  socket.on('close', () => {
    // console.log(clients.findIndex(c => c == socket));
  })
})


